#ifndef _vioscsidt_h_
#define _vioscsidt_h_

// VioScsiExtendedInfoGuid - VioScsiExtendedInfo
// VirtIO SCSI Extended Information
#define VioScsiWmi_ExtendedInfo_Guid                                                                                   \
    {                                                                                                                  \
        0x5cdac4f6, 0x3d46, 0x44e2,                                                                                    \
        {                                                                                                              \
            0x8d, 0xee, 0x01, 0x60, 0x6e, 0x11, 0xe2, 0x65                                                             \
        }                                                                                                              \
    }

#if !(defined(MIDL_PASS))
DEFINE_GUID(VioScsiExtendedInfoGuid_GUID, 0x5cdac4f6, 0x3d46, 0x44e2, 0x8d, 0xee, 0x01, 0x60, 0x6e, 0x11, 0xe2, 0x65);
#endif

typedef struct _VioScsiExtendedInfo
{
    //
    ULONG QueueDepth;
#define VioScsiExtendedInfo_QueueDepth_SIZE sizeof(ULONG)
#define VioScsiExtendedInfo_QueueDepth_ID   1

    //
    UCHAR QueuesCount;
#define VioScsiExtendedInfo_QueuesCount_SIZE sizeof(UCHAR)
#define VioScsiExtendedInfo_QueuesCount_ID   2

    //
    BOOLEAN Indirect;
#define VioScsiExtendedInfo_Indirect_SIZE sizeof(BOOLEAN)
#define VioScsiExtendedInfo_Indirect_ID   3

    //
    BOOLEAN EventIndex;
#define VioScsiExtendedInfo_EventIndex_SIZE sizeof(BOOLEAN)
#define VioScsiExtendedInfo_EventIndex_ID   4

    //
    BOOLEAN DpcRedirection;
#define VioScsiExtendedInfo_DpcRedirection_SIZE sizeof(BOOLEAN)
#define VioScsiExtendedInfo_DpcRedirection_ID   5

    //
    BOOLEAN ConcurrentChannels;
#define VioScsiExtendedInfo_ConcurrentChannels_SIZE sizeof(BOOLEAN)
#define VioScsiExtendedInfo_ConcurrentChannels_ID   6

    //
    BOOLEAN InterruptMsgRanges;
#define VioScsiExtendedInfo_InterruptMsgRanges_SIZE sizeof(BOOLEAN)
#define VioScsiExtendedInfo_InterruptMsgRanges_ID   7

    //
    BOOLEAN CompletionDuringStartIo;
#define VioScsiExtendedInfo_CompletionDuringStartIo_SIZE sizeof(BOOLEAN)
#define VioScsiExtendedInfo_CompletionDuringStartIo_ID   8

    //
    BOOLEAN RingPacked;
#define VioScsiExtendedInfo_RingPacked_SIZE sizeof(BOOLEAN)
#define VioScsiExtendedInfo_RingPacked_ID   9

    //
    ULONG PhysicalBreaks;
#define VioScsiExtendedInfo_PhysicalBreaks_SIZE sizeof(ULONG)
#define VioScsiExtendedInfo_PhysicalBreaks_ID   10

    //
    ULONG ResponseTime;
#define VioScsiExtendedInfo_ResponseTime_SIZE sizeof(ULONG)
#define VioScsiExtendedInfo_ResponseTime_ID   11
} VioScsiExtendedInfo, *PVioScsiExtendedInfo;

#define VioScsiExtendedInfo_SIZE                                                                                       \
    (FIELD_OFFSET(VioScsiExtendedInfo, ResponseTime) + VioScsiExtendedInfo_ResponseTime_SIZE)

#endif
